﻿using Common;
using Linguist.Acoustic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Linguist.LexTree
{
    public abstract class UnitNode: Node
    {
        public static int SIMPLE_UNIT = 1;
        public static int WORD_BEGINNING_UNIT = 2;
        public static int SILENCE_UNIT = 3;
        public static int FILLER_UNIT = 4;

        private int type;
        /// <summary>
        /// Gets and set the unit type (one of SIMPLE_UNIT, WORD_BEGINNING_UNIT, SIMPLE_UNIT or FILLER_UNIT
        /// </summary>
        public int Type
        {
            get { return type; }
            set { type = value; }
        }


        /**
        /// Creates the UnitNode
         *
        /// @param probablilty the probability for the node
         */
        public UnitNode(float probablilty) 
            :base(probablilty)
        {
            
        }


        /**
        /// Returns the base unit for this hmm node
         *
        /// @return the base unit
         */
        public abstract IUnit getBaseUnit();


        public abstract Object getKey();


        public abstract HMMPosition getPosition();
        

    }
}
